﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace Lost_and_Found.Models.ViewModel
{
    public class RegisterModel
    {
        [Display(Name = "Tên đăng nhập(*)")]
        [Required(ErrorMessage = "Chưa nhập tên đăng nhập")]
        [StringLength(16, ErrorMessage = "Tên đăng nhập chỉ chứa tối đa 16 ký tự")]
        [RegularExpression("^([0-9A-Za-z]+)", ErrorMessage = "Tên đăng nhập không chứa ký tự đặc biệt")]
        public string Username { get; set; }

        [Display(Name = "Tên hiển thị(\\*)")]
        [Required(ErrorMessage = "Chưa nhập tên hiển thị")]
        [StringLength(30, ErrorMessage = "Tên hiển thị chỉ chứa tối đa 30 ký tự")]
        public string Fullname { get; set; }

        [Display(Name = "Mật khẩu(*)")]
        [Required(ErrorMessage = "Chưa nhập mật khẩu")]
        [StringLength(255, MinimumLength = 6, ErrorMessage = "Mật khẩu tối thiểu 6 ký tự")]
        public string Password { get; set; }

        [Display(Name = "Xác nhận mật khẩu(*)")]
        [DataType(DataType.Password)]
        [Compare("Password", ErrorMessage = "Mật khẩu xác nhận không khớp")]
        [Required(ErrorMessage = "Chưa nhập mật khẩu")]
        [StringLength(255, MinimumLength = 6, ErrorMessage = "Mật khẩu tối thiểu 6 ký tự")]
        public string ComfirmPassword { get; set; }

        [Display(Name = "Email(*)")]
        [Required(ErrorMessage = "Chưa nhập email")]
        [EmailAddress(ErrorMessage = "Định dạng Email chưa đúng")]
        public string Email { get; set; }


        [Display(Name = "Số điện thoại")]
        [StringLength(13, MinimumLength = 10, ErrorMessage = "Số điện thoại chưa đúng")]
        [RegularExpression("^([0-9+]+)", ErrorMessage = "Số điện thoại chưa đúng")]
        public string Phone { get; set; }

        [Display(Name = "Mã số sinh viên")]
        [StringLength(8, MinimumLength = 8, ErrorMessage = "Mã số sinh viên gồm 8 số")]
        [RegularExpression("^([0-9]+)", ErrorMessage = "Mã số sinh viên gồm 8 số")]
        public string SIndex { get; set; }

        [Display(Name = "Lớp đang học")]
        [RegularExpression("^([0-9A-Za-z.]+)", ErrorMessage = "Lớp chưa đúng")]
        public string SClass { get; set; }

        [Display(Name = "Khoa/Viện")]
        public string SInstitute { get; set; }

        [Display(Name = "Khóa")]
        public string SGrade { get; set; }

    }

    public class LoginModel
    {
        [Display(Name = "Tên đăng nhập")]
        [Required(ErrorMessage = "Chưa nhập tên đăng nhập")]
        [StringLength(16, ErrorMessage = "Tên đăng nhập chỉ chứa tối đa 16 ký tự")]
        [RegularExpression("^([0-9A-Za-z]+)", ErrorMessage = "Tên đăng nhập không chứa ký tự đặc biệt")]
        public string Username { get; set; }

        [Display(Name = "Mật khẩu")]
        [Required(ErrorMessage = "Chưa nhập mật khẩu")]
        public string Password { get; set; }
    }

    public class AdminModel
    {
        [Display(Name = "Tên đăng nhập")]
        [Required(ErrorMessage = "Chưa nhập tên đăng nhập")]
        [StringLength(16, ErrorMessage = "Tên đăng nhập chỉ chứa tối đa 16 ký tự")]
        [RegularExpression("^([0-9A-Za-z]+)", ErrorMessage = "Tên đăng nhập không chứa ký tự đặc biệt")]
        public string Username { get; set; }

        [Display(Name = "Tên hiển thị")]
        [Required(ErrorMessage = "Chưa nhập tên hiển thị")]
        [StringLength(30, ErrorMessage = "Tên hiển thị chỉ chứa tối đa 30 ký tự")]
        public string Fullname { get; set; }

        [Display(Name = "Email")]
        [DataType(DataType.EmailAddress, ErrorMessage = "Email không đúng")]
        [Required(ErrorMessage = "Chưa nhập Email")]
        public string Email { get; set; }

        [Display(Name = "Mật khẩu")]
        [DataType(DataType.Password)]
        [Required(ErrorMessage = "Chưa nhập mật khẩu")]
        [StringLength(255, MinimumLength = 6, ErrorMessage = "Mật khẩu tối thiểu 6 ký tự")]
        public string Password { get; set; }

        [Display(Name = "Xác nhận mật khẩu")]
        [DataType(DataType.Password)]
        [Compare("Password", ErrorMessage = "Mật khẩu xác nhận không khớp")]
        [Required(ErrorMessage = "Chưa nhập mật khẩu")]
        [StringLength(255, MinimumLength = 6, ErrorMessage = "Mật khẩu tối thiểu 6 ký tự")]
        public string ComfirmPassword { get; set; }

        [Display(Name = "Quyền")]
        public string Role { get; set; }
    }

    public class UserEditModel
    {
        [Display(Name = "Tên đăng nhập")]
        [Required(ErrorMessage = "Chưa nhập tên đăng nhập")]
        [StringLength(16, ErrorMessage = "Tên đăng nhập chỉ chứa tối đa 16 ký tự")]
        [RegularExpression("^([0-9A-Za-z]+)", ErrorMessage = "Tên đăng nhập không chứa ký tự đặc biệt")]
        public string Username { get; set; }

        [Display(Name = "Tên hiển thị")]
        [Required(ErrorMessage = "Chưa nhập tên hiển thị")]
        [StringLength(30, ErrorMessage = "Tên hiển thị chỉ chứa tối đa 30 ký tự")]
        public string Fullname { get; set; }

        [Display(Name = "Email")]
        [DataType(DataType.EmailAddress, ErrorMessage = "Email không đúng")]
        [Required(ErrorMessage = "Chưa nhập Email")]
        public string Email { get; set; }

        [Display(Name = "Mật khẩu")]
        [DataType(DataType.Password)]
        [Required(ErrorMessage = "Chưa nhập mật khẩu")]
        [StringLength(255, MinimumLength = 6, ErrorMessage = "Mật khẩu tối thiểu 6 ký tự")]
        public string Password { get; set; }

        [Display(Name = "Xác nhận mật khẩu")]
        [DataType(DataType.Password)]
        [Compare("Password", ErrorMessage = "Mật khẩu xác nhận không khớp")]
        [Required(ErrorMessage = "Chưa nhập mật khẩu")]
        [StringLength(255, MinimumLength = 6, ErrorMessage = "Mật khẩu tối thiểu 6 ký tự")]
        public string ComfirmPassword { get; set; }

        [Display(Name = "Quyền")]
        public string Role { get; set; }

        [Display(Name = "Số điện thoại")]
        [StringLength(13, MinimumLength = 10, ErrorMessage = "Số điện thoại chưa đúng")]
        [RegularExpression("^([0-9+]+)", ErrorMessage = "Số điện thoại chưa đúng")]
        public string Phone { get; set; }

        [Display(Name = "Mã số sinh viên")]
        [StringLength(8, MinimumLength = 8, ErrorMessage = "Mã số sinh viên gồm 8 số")]
        [RegularExpression("^([0-9]+)", ErrorMessage = "Mã số sinh viên gồm 8 số")]
        public string SIndex { get; set; }

        [Display(Name = "Lớp đang học")]
        [RegularExpression("^([0-9A-Za-z.]+)", ErrorMessage = "Lớp chưa đúng")]
        public string SClass { get; set; }

        [Display(Name = "Khoa/Viện")]
        public string SInstitute { get; set; }

        [Display(Name = "Khóa")]
        public string SGrade { get; set; }

    }
}